1. Field of the Invention
The present invention relates to a system, method, and program for processing Input/Output (I/O) requests to a storage space having a plurality of storage devices.
2. Description of the Related Art
In a storage loop architecture, such as the Serial Storage Architecture (SSA), a plurality of disks are interconnected to one or more adaptors so that either of the adaptors can access the one or more loops of interconnected disks. An adaptor may include two or more ports to allow connection to one or more loops. For each loop on which the adaptor communicates, one adaptor port connects to a first disk in the loop and the other port connects to another disk in the loop. Additional adaptors may be added to the loop, such that one port on each other adaptor connects to one disk and another port connects to another disk so that the additional adaptors are placed within the loop. One or more computer systems, such as storage subsystems, host system, etc., may include the adaptors connecting to the loop. Additional details of the SSA architecture and different possible loop topologies are described in the International Business Machines Corporation (IBM) publication xe2x80x9cUnderstanding SSA Subsystems in Your Environmentxe2x80x9d, IBM document no. SG24-5750-00 (April, 2000).
In prior art SSA configurations, host systems will typically go through one of the available adaptors to access the disks or devices in the SSA loop. The disks in an SSA loop including two host adaptors may be configured with one or more Redundant Array of Independent Disks (RAID) ranks. In RAID systems, data is written in a stripe unit across a disk, where the blocks in a stripe are distributed across the multiple disks assigned to the RAID rank. In current SSA configurations, one host adaptor handles data access requests to a RAID rank, such that the one host adaptor will read and write data to all the disks in a stripe unit.
There is a continued need in the art to improve data access performance in device configurations, such as disks organized in a loop architecture.
Provided are a method, system, and program for processing Input/Output (I/O) requests to a storage space having a plurality of storage devices. An I/O request is received directed to target locations in a plurality of the storage devices, wherein the storage space includes at least two adaptors and wherein each adaptor is capable of separately executing an I/O request against at least one of the storage devices. Component I/O requests are generated to the target location in each of the storage devices. The component I/O requests for the different storage devices are transmitted to a plurality of adaptors, wherein each adaptor separately executes the component I/O request against one storage device to access the target location.
Further, the adaptors may concurrently execute the component I/O requests against the storage devices.
In certain implementations, the storage devices including the locations subject to the I/O request are configured within a Redundant Array of Independent Disks (RAID) rank. The target locations form a stripe unit in the RAID rank.
In still further implementations, the adaptors and storage devices are arranged in a loop architecture.
Further provided are a method, system, and program for processing Input/Output (I/O) requests to a storage space having a plurality of storage devices. An Input/Output (I/O) request is received directed to a target location in a target storage device in the storage space, wherein the storage space includes at least two adaptors providing access to the storage devices. A determination is made of a plurality of paths to the target storage device, wherein a path comprises one adaptor or one adaptor and at least one intervening storage device. A determination is made of a characteristic of each determined path. One path is selected based on the determined characteristic and the I/O request is transmitted to the adaptor in the selected path.
In further implementations, determining the characteristic comprises estimating performance of the path.
In still further implementations, estimating the performance comprises determining a number of intervening storage devices in the path between the adaptor and the target storage device. Further, estimating the performance may also include determining a number of I/O operations being processed by the adaptor in the path.
The described implementations provide techniques for selecting a path to reach a target storage device subject to an I/O request when the storage device may be accessed through separate adaptors. In certain implementations, multiple adaptors are used to concurrently access storage devices subject to a single I/O request. Still further, the implementations may be used to select one of multiple paths to a target storage device based on characteristics of the path, such as the performance of the path.